Today's digital systems interface with one another using a wide variety of interfaces. Each such interface is typically an implementation of an interface standard, which is defined by standards-making bodies such as the Institute of Electrical and Electronics Engineers (IEEE) or American National Standards Institute (ANSI), and promulgated thereby. Standardization ensures that implementations of such interfaces interoperate correctly and provide acceptable performance, under expected conditions. This allows an end-user to interface one such digital system (e.g., a computer, a digital camcorder or camera, a cellular telephone, a scanner, a television set) with another digital system, with confidence that the digital systems will be able to successfully communicate with one another.
In designing such systems, manufacturers are thus faced with supporting this variety of interface standards, or a substantial subset thereof. The complexity this engenders becomes readily apparent, for example, when one examines any of the currently-available desktop computers. Such a computer will typically support interfaces that include the Universal Serial Bus (USB), IEEE 1394 (also referred to as “Firewire”), Ethernet (including one or more of 10/100/1000 Base-T), memory stick and the like. As will be appreciated, each such standard interface has not only its own protocol definition(s), but also its own requirements as to output impedance, termination impedance, data rate, signal voltages and other such characteristics, as can be seen in Table 1.
TABLE 1Characteristics of various interface standards.InterfaceDataOutputTerminationOtherStandardRateImpedanceImpedanceFeaturesUSB 2.0480 Mb/s 45 ohms 45 ohm1 pairPull-Down800 mV (p-p)(90 ohm18 mADiff.)5 V tolerantIEEE 1394a400 Mb/s100 ohms100 ohms2 pairDiff.Diff.2.8 V (max)+/−4 mA100 B-T100 Mb/s100 ohms100 ohms2 pairEthernet+/−1.8 VPAM5 modulation
In designing such systems, manufacturers tend to prefer using programmable logic devices (PLDs) such as field-programmable gate arrays (FPGAs), as opposed to application-specific integrated circuits (ASICs), for a variety of reasons. A PLD is a type of integrated circuit (IC) that includes configurable resources such as configurable logic blocks, configurable input/output blocks, a configurable interconnect structure, memories, multipliers, processors, etc. The configurable resources of a PLD may be configured to implement a wide variety of desired functions. Typically, configuration data stored in configuration memory cells may be define the desired function in a PLD. The advantages provided by PLDs includes their greater flexibility, ability to be reconfigured (providing the ability to update their capabilities (even in the field) and reducing inventory by allowing a single part to be used in multiple applications), cost to develop, and other advantages.
What is therefore desired is an interface circuit that can be configured to support a variety of interface standards. Preferably, such a circuit may be easily implemented in a programmable logic device, and may allowing for support of as many such interface standards as possible. It is also preferable that such a circuit allow for the individual use of some or all of its components, such that those components are available for use in designs implemented in the programmable logic device that do not require such an interface circuit.